home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cbibcode.arc / KBHIT.C < prev    next >
Text File  |  1991-08-05  |  2KB  |  66 lines

  1. /* kbhit.c --- p 520 */
  2. #include <stdio.h>
  3. #include <alloc.h>
  4. #include <graphics.h>
  5. main()
  6. {
  7.     char far *image;                   /* Storage for image */
  8.     char buffer[80];
  9.     int x=0, y=0, xmax, ymax, gerror;
  10.     unsigned numbytes;
  11.     int gdriver=DETECT, gmode;
  12.     intgraph (&gdriver, &gmode, "c:\\turboc");
  13.     if (gerror=graphresult()) !=grOK
  14.     {
  15.                         /* Error setting mode */
  16.         printf("Error: %s\n",grapherrormsg(gerror));
  17.         exit(0);
  18.     }
  19.     xmax=getmaxx();
  20.     ymax=getmaxy();
  21.                 /* Draw a small stick figure to save */
  22.     setcolor(YELLOW);
  23.     fillellipse(5,5,5,5);
  24.     moveto(5,10);
  25.     lineto(5,20);
  26.     lineto(0,30);
  27.     moveto(10,30);
  28.     lineto(5,20);
  29.     moveto(0,15);
  30.     lineto(0,10);
  31.     lineto(10,15);
  32.             /* Determine storage needed for entire screen and
  33.              * display result. */
  34.     numbytes = imagesize(0,0,10,30);
  35.             /* allocate buffer for image */
  36.     if ((image = (char far *) malloc(numbytes)) == (char far *)NULL)
  37.     {
  38.         closegraph();
  39.         printf("Not enough memory for image storage\n");
  40.         exit(0);
  41.     }
  42.     getimage(x,y,10,30,image);            /* Save the image */
  43.             /* Now clear screen and draw saved image at several
  44.              * screen locations. */
  45.     clearviewport();
  46.     outtextxy(10,10,"Demonstrating animation with putimage");
  47.     outtextxy(10, ymax_50,"Hit any key to exit:");
  48.     x = xmax/2;
  49.     y = ymax/2;
  50.     putimage(x,y,image,XOR_PUT);
  51.             /* Using kbhit and putimage, perform animation
  52.              * until user hits a key. */
  53.     while( !kbhit() )
  54.     {
  55.                         /* Erase at last position */
  56.         putimage(x,y,image,XOR_PUT);
  57.         y += 2;
  58.         x += 2;
  59.         if(x> xmax-50) x = 50;
  60.         if(y> ymax-50) y = 50;
  61.                         /* Redraw at new position */
  62.           putimage(x,y,image,XOR_PUT);
  63.     }
  64.                         /* Restore original mode */
  65.     closegraph();
  66. }